<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>03-扩展运算符</title>
</head>
<body>
    <script>
        // 扩展运算符: ...
        // 取出对象所有可以遍历的属性，然后拷贝给当前对象
        // 作用：1. 对象的浅拷贝    2. 对象的合并
        let hat = {red:'红色',price:99};
        let phone = {year:2022};
        let school = {name:'河南',address:'波士顿',hat};

        // = 复杂数据类型传递的是内存地址
        // let university = school;
        
        // 拷贝对象
        let university = {...school};
        school.name = '北大';
        hat.price = 88;
        console.log(hat);   // {red: '红色', price: 88}
        console.log(university);
        //{name: '河南', address: '波士顿', hat: {…}}

        // 对象的合并
        let result = { ...phone,...hat};
        phone.year = 2000;
        console.log(phone);  // {year: 2000}  原来的覆盖了
        console.log(result);  //{year: 2022, red: '红色', price: 99}

    /*
        university这被赋值的时候，university原地址无效，
        又重新创建了一个自己的地址，跟school是两个独立的地址，

                首先，对象的属性遍历
        浅拷贝：基本数据类型拷贝的值，
                复杂数据类型拷贝的是内存地址。
    */

    </script>
</body>
</html>